﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Hotel_Admin.Common;
using HOTEL.Dao;
using Hotel.Util;
using Hotel.Domain;
using System.Drawing;
using Hotel_Admin.Web.Common;

namespace Hotel_Admin
{
    public partial class KH_NhanPhong : Authentication
    {
        private PhongDao phongDao = new PhongDao();
        private PhieuDatPhongDao phieudatphongDao = new PhieuDatPhongDao();
        private ChitietphieudatDao chitetphieudatDao = new ChitietphieudatDao();
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckViewPermission();
            if (!Page.IsPostBack)
            {
                LoadReference();
                BindDataForGird();
            }
        }
        protected void LoadReference()
        {
            CommonFunc.BindDropDownList(ddlTinhTrangDon, phieudatphongDao.GetTrangThaiPhieuDat(), "TenTrangThai", "MaTrangThai", true);
        }
        protected bool IsValidData()
        {
            return true;
        }
        protected void BindDataForGird()
        {
            var trangthai = ConvertUtil.ToInteger(ddlTinhTrangDon.SelectedValue);
            var list = phieudatphongDao.Search(txtCMND.Text.Trim(), txtTenKhachHang.Text.Trim(), null, null, trangthai);
            gvList.DataSource = list;
            gvList.DataBind();
            divDetails.Visible = false;
            upChiTietPhieuDat.Update();
            upGird.Update();
        }
        protected void ClearForm()
        {
            txtCMND.Text = "";
            txtTenKhachHang.Text = "";
            upInfor.Update();
        }
        protected void CheckViewPermission()
        {
            if (!HasViewPermission(Pages.KH_NhanPhong.GetHashCode()))
            {
                Redirect(WebURL.UrlWebDinie);
            }
        }
        protected void BindChiTietPhieuDat()
        {
            lbTenPhieuDat.Text = String.Format("THÔNG TIN PHIẾU ĐẶT PHÒNG CỦA {0}-{1}", phieudatChose.HoTen.ToUpper(), phieudatChose.CMND.ToUpper());
            var listchiet = phieudatphongDao.GetListDetailByPhieuDat(phieudatChose.MaPhieuDat);
            gvDetail.DataSource = listchiet;
            gvDetail.DataBind();
            divDetails.Visible = listchiet.Count > 0;
            upChiTietPhieuDat.Update();
        }
        protected void gvList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var require = e.CommandName;
            var id = e.CommandArgument.ToString();
            switch (require)
            {
                case "EditItem":
                    var phieudat = phieudatphongDao.Get(id);
                    if (phieudat != null)
                    {
                        phieudatChose = phieudat;
                        BindChiTietPhieuDat();
                    }
                    break;
            }
        }
        protected PHIEU_DAT_PHONG phieudatChose
        {
            get
            {
                return Session[SessionKey.SessionCurrernPhieuDat] as PHIEU_DAT_PHONG;
            }
            set
            {
                Session[SessionKey.SessionCurrernPhieuDat] = value;
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            ClearForm();
            CloseWaitingDialog();
        }

        protected void btnFilter_Click(object sender, EventArgs e)
        {
            BindDataForGird();
            CloseWaitingDialog();
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
           
           
        }

        protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e)   
        {
            if (!e.Row.RowType.Equals(DataControlRowType.DataRow)) return;
            var list = gvList.DataSource as List<PHIEU_DAT_PHONG>;
            var panel = e.Row.FindControl("status") as Panel;
            if (panel != null)
            {
                var item = list[e.Row.RowIndex + gvList.PageIndex * gvList.PageSize];
                panel.BackColor = Color.FromName(item.TRANG_THAI_PHIEU_DAT.Color);
            }
        }

        protected void gvDetail_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var require = e.CommandName;
            var id = ConvertUtil.ToInteger(e.CommandArgument.ToString());
            if (!id.HasValue) return;
            var gvrow = (((LinkButton)e.CommandSource).NamingContainer);
            if(gvrow==null)return;
            var txtChungMinh = gvrow.FindControl("txtChungMinh") as TextBox;
            var txtTenKhachHang = gvrow.FindControl("txtTenKhachHang") as TextBox;
            var ctphieudat = phieudatphongDao.GetChiTietPhieuDat(id.Value);
            var phieudatphong = phieudatphongDao.Get(ctphieudat.MaPhieuDat);
            switch (require)
            {

                case "DatPhongItem":
                    if (ctphieudat != null)
                    {
                        if (String.IsNullOrEmpty(txtChungMinh.Text.Trim()))
                        {
                            ShowError("Chứng minh khộng được trống", txtChungMinh.ClientID);
                            return;
                        }
                        if (String.IsNullOrEmpty(txtTenKhachHang.Text.Trim()))
                        {
                            ShowError("Tên khách hàng khộng được trống", txtTenKhachHang.ClientID);
                            return;
                        }
                        var phieuthuephong = new PHIEU_THUE_PHONG
                        {
                            MaPhieuDat=ctphieudat.MaPhieuDat,
                            CMND=txtChungMinh.Text.Trim(),
                            TenKhachHang=txtTenKhachHang.Text.Trim(),
                            MaPhong=ctphieudat.MaPhong.Value,
                            TongTienDichVu=0,
                            MaNV=UserLogin.MaNV,
                            DonGia=ctphieudat.DonGia
                        };
                        var msg = phieudatphongDao.NhanPhong(phieuthuephong,ctphieudat);
                        if (msg.MsgType != MessageType.Info)
                        {
                            ShowError("Nhận phòng không thành công");
                            CloseWaitingDialog();
                            return;
                        }
                        else
                        {
                            ShowInfor("Nhận phòng thành công");
                            // Cập nhật tình trạng phòng là đã đặt
                            phongDao.CapNhatTrangNhan(ctphieudat.MaPhong.Value, 3);
                            // rebind data
                            BindDataForGird();
                            BindChiTietPhieuDat();
                            CloseWaitingDialog();
                            return;
                        }
                    }
                    break;
                case "HuyPhongItem":
                    if (ctphieudat != null)
                    {
                        var msg = phieudatphongDao.HuyChiTietPhieuDatPhong(ctphieudat);
                        if (msg.MsgType != MessageType.Info)
                        {
                            ShowError("Hủy phòng không thành công");
                            CloseWaitingDialog();
                            return;
                        }
                        else
                        {
                            ShowInfor("Hủy phòng thành công");
                            // Cập nhật tình trạng phòng là đã đặt
                            phongDao.CapNhatTrangThaiHuy(ctphieudat.MaPhong.Value, 1);
                            // xóa dữ liệu trong bang chi tiết đặt phòng
                            chitetphieudatDao.XoaChiTietPhieuDat(ctphieudat.MaPhieuDat);
                            // xóa dữ liệu trong bản đặt phòng
                            phieudatphongDao.Delete(phieudatphong);
                            BindDataForGird();
                            BindChiTietPhieuDat();
                            CloseWaitingDialog();
                            return;
                        }
                    }
                    break;
            }
        }

        protected void gvDetail_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (!e.Row.RowType.Equals(DataControlRowType.DataRow)) return;
            var list = gvDetail.DataSource as List<CT_PHIEU_DAT_PHONG>;
            var panel = e.Row.FindControl("status") as Panel;
            if (panel != null)
            {
                var item = list[e.Row.RowIndex + gvDetail.PageIndex * gvDetail.PageSize];
                panel.BackColor = Color.FromName(item.TRANG_THAI_CHI_TIET_PHIEU_DAT.Color);
            }
        }

    }
}